In the past, computing applications have often operated on a single device. The application would be stored on a local hard drive and accessed when needed. This required every computer to have a hard drive and a copy of the application. Accessing application and data remotely was a challenge as the data was almost always stored on the local hard drive which rarely was available remotely. Efficiency problems also existed as users often had significantly more processing power than necessary to operate most applications meaning a significant portion of available processing power sat idle for a majority of the time.
Recently, more and more applications have been moved to a distributed application model, also known as “the cloud.” In the cloud, a plurality of processors, which may be part of a computing device such as a server, are accessed over a network. Applications may operate on processors in the cloud and a lite client on the local computing device may display a user interface to a user. The bulk of the processing may occur on the processors in the cloud.
Traditionally, in the cloud, tasks or work items are executed on a first in, first out (FIFO) type of manner. While such an approach assures that a task/work item does not wait too long to be executed, the efficiency of FIFO as applied to tasks/work items is low as processors often have to switch applications, load new applications, switch resources, access new resources, etc. to execute the variety of items that are sent to the cloud.